home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / vbcc-src / machines / alpha / schedule.c < prev    next >
C/C++ Source or Header  |  1999-01-01  |  2KB  |  107 lines

  1. #include "vsc.h"
  2.  
  3. char tg_copyright[]="Alpha scheduler V0.0 (c) in 1997 by Volker Barthelmann";
  4.  
  5. int sched_init(void)
  6. {
  7.   return 1;
  8. }
  9. void sched_cleanup(void)
  10. {
  11. }
  12. int sched_info(struct sinfo *p)
  13. {
  14.   char buf[20];int q1,q2,z,i;
  15.   if(sscanf(p->txt,"$C%d:",&i)==1){
  16.     p->label=i;
  17.     p->flags=LABEL;
  18.     return 1;
  19.   }
  20.   /* lda $r1,imm($r2) */
  21.   if(sscanf(p->txt,"lda $%d,%d($%d)",&z,&i,&q1)==3){
  22.     p->latency=1;
  23.     BSET(p->pipes,0);
  24.     BSET(p->pipes,1);
  25.     BSET(p->uses,q1);
  26.     BSET(p->modifies,z);
  27.     return 1;
  28.   }
  29.   /* lda $r1,... */
  30.   if(sscanf(p->txt,"lda $%d,",&z)==1){
  31.     BSET(p->pipes,0);
  32.     BSET(p->pipes,1);
  33.     BSET(p->modifies,z);
  34.     return 1;
  35.   }
  36.   /* op $r1,$r2,$r3 */
  37.   if(sscanf(p->txt,"%19s $%d,$%d,$%d",buf,&q1,&q2,&z)==4){
  38.     p->latency=1;
  39.     BSET(p->pipes,0);
  40.     BSET(p->pipes,1);
  41.     BSET(p->uses,q1);
  42.     BSET(p->uses,q2);
  43.     BSET(p->modifies,z);
  44.     return 1;
  45.   }
  46.   /* op $r1,$r2 */
  47.   if(sscanf(p->txt,"%19s $%d,$%d",buf,&q1,&z)==3){
  48.     p->latency=1;
  49.     BSET(p->pipes,0);
  50.     BSET(p->pipes,1);
  51.     BSET(p->uses,q1);
  52.     BSET(p->modifies,z);
  53.     return 1;
  54.   }
  55.   /* op $r1,imm,$r2 */
  56.   if(sscanf(p->txt,"%19s $%d,%d,$%d",buf,&q1,&i,&z)==4){
  57.     p->latency=1;
  58.     BSET(p->pipes,0);
  59.     BSET(p->pipes,1);
  60.     BSET(p->uses,q1);
  61.     BSET(p->modifies,z);
  62.     return 1;
  63.   }
  64.   /* op $fr1,$fr2,$fr3 */
  65.   if(sscanf(p->txt,"%19s $f%d,$f%d,$f%d",buf,&q1,&q2,&z)==4){
  66.     p->latency=1;
  67.     BSET(p->pipes,2);
  68.     BSET(p->pipes,3);
  69.     BSET(p->uses,q1+32);
  70.     BSET(p->uses,q2+32);
  71.     BSET(p->modifies,z+32);
  72.     return 1;
  73.   }
  74.   /* load/store $r1,c($r2) */
  75.   if(sscanf(p->txt,"%19s $%d,%d($%d)",buf,&z,&i,&q1)==4){
  76.     p->latency=3;
  77.     BSET(p->pipes,0);
  78.     BSET(p->uses,q1);
  79.     if(*buf=='l'){
  80.       BSET(p->pipes,1);
  81.       BSET(p->modifies,z);
  82.       BSET(p->uses,MEM);
  83.     }else{
  84.       BSET(p->uses,z);
  85.       BSET(p->modifies,MEM);
  86.     }
  87.     return 1;
  88.   }
  89.   /* load/store $fr1,c($r2) */
  90.   if(sscanf(p->txt,"%19s $f%d,%d($%d)",buf,&z,&i,&q1)==4){
  91.     p->latency=3;
  92.     BSET(p->pipes,0);
  93.     BSET(p->uses,q1);
  94.     if(*buf=='l'){
  95.       BSET(p->pipes,1);
  96.       BSET(p->modifies,z+32);
  97.       BSET(p->uses,MEM);
  98.     }else{
  99.       BSET(p->uses,z+32);
  100.       BSET(p->modifies,MEM);
  101.     }
  102.     return 1;
  103.   }
  104.   p->flags=BARRIER;
  105.   return 1;
  106. }
  107.